package com.mall.product.controller;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import com.mall.common.annotation.IngoreResponseAdvice;
import com.mall.entity.TbItem;
import com.mall.product.service.ItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author  LiJinYang
 * @email  283006176@qq.com
 * @date 2021/07/16 15:40
 * @version 1.0
 */
@RestController
@RequestMapping("/item")
@CrossOrigin
public class ItemController {

    @Autowired
    private ItemService itemService;


    /**
     * 查询所有
     *
     * @return {@link List< TbItem >}
     */
    @GetMapping("findAll")
    public List<TbItem> findAll() {
        return itemService.findAll();
    }

    /**
     * 商品其他设置  单规格商品添加
     */
    @PostMapping("/addItem")
    public boolean addItem(@RequestBody TbItem item) {
        return itemService.addItem(item);
    }


    /**
     * 根据分类 名称 关键字 id查询  分页数据
     *  查询默认status 为 1   仓库中的商品 2
     */
    @PostMapping("/findPage")
    public PageInfo findPage(
            @RequestBody TbItem item,
            @RequestParam(value = "pageNum",defaultValue = "1") int pageNum,
            @RequestParam(value = "pageSize",defaultValue = "2") int pageSize
    ) {
        return itemService.findPage(item,pageNum,pageSize);
    }

    /**
     * 根据分类 名称 关键字 id查询  分页数据  查询仓库中的和在售商品
     *  查询默认status 为 1   仓库中的商品 2
     */
    @PostMapping("/findAllPage")
    public PageInfo findAllPage(
            @RequestBody TbItem item,
            @RequestParam(value = "pageNum",defaultValue = "1") int pageNum,
            @RequestParam(value = "pageSize",defaultValue = "2") int pageSize
    ) {
        return itemService.findAllPage(item,pageNum,pageSize);
    }


    /**
     * 商品加入回收站
     *  修改商品状态 修改为4
     */
    @PutMapping("/del")
    public boolean updateStatus(Long id,String status) {
        return itemService.updateStatus(id,status);
    }

    /**
     * 查询单个商品
     */
    @GetMapping("/findOne")
    public TbItem findOne(@RequestParam("id") Long id) {
        return itemService.findOne(id);
    }

    /**
     * 动态修改状态
     */
    @PutMapping("/upStatus")
    public boolean upStatus(Long id,String status){
        return itemService.upStatus(id,status);
    }

    /**
     * 商品评论下拉框
     * @return
     */
    @GetMapping("find")
    public List<TbItem> find() {
        return itemService.find();
    }

    @GetMapping("findByGoodsId")
    @IngoreResponseAdvice
    TbItem findByGoodsId(@RequestParam("goodsId")Long goodsId){
        return itemService.findByGoodsId(goodsId);
    }

    @PutMapping("/update")
    @IngoreResponseAdvice
    void update(@RequestBody TbItem item) {
        itemService.update(item);
    }


}
